package com.vote.www.utils;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.cloopen.rest.sdk.utils.encoder.BASE64Decoder;
import com.cloopen.rest.sdk.utils.encoder.BASE64Encoder;

public class ImgBase64Util {
	
	private static final Logger log = LoggerFactory
			.getLogger(ImgBase64Util.class);

	public static void main(String[] args) {
		
		 String strImg = getImageStr("D:/a/1.jpg");//读取D盘  1.jpg
	        System.out.println(strImg);
	        //generateImage(strImg, "D:/b/2.jpg"); //转存D盘  2.jpg
		
	}
	/**
    * @param imgStr base64编码字符串
    * @param path   图片路径-具体到文件
    * @return
    * @Description: 将base64编码字符串转换为图片
    * @Author:
    * @CreateTime:
    */
   public static boolean generateImage(String imgStr, String path) {
       if(imgStr == null){
           return false;
       }
       BASE64Decoder decoder = new BASE64Decoder();
       try{
           //解密
           byte[] b = decoder.decodeBuffer(imgStr);
           //处理数据
           for (int i = 0;i<b.length;++i){
               if(b[i]<0){
                   b[i]+=256;
               }
           }
           OutputStream out = new FileOutputStream(path);
           out.write(b);
           out.flush();
           out.close();
           return true;
       } catch (IOException e) {
           e.printStackTrace();
           log.info("error", e);
           return false;
       }
   }
	
   /**
    * @Description: 根据图片地址转换为base64编码字符串
    * @Author:
    * @CreateTime:
    * @return
    */
   public static String getImageStr(String imgFile) {
       InputStream inputStream = null;
       byte[] data = null;
       try {
           inputStream = new FileInputStream(imgFile);
           data = new byte[inputStream.available()];
           inputStream.read(data);
           inputStream.close();
       } catch (IOException e) {
           e.printStackTrace();
           log.info("error", e);
       }
       // 加密
       BASE64Encoder encoder = new BASE64Encoder();
       return encoder.encode(data);
   }
   
}
